//package com.yunchang.springboot.service.database.impl;
//
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.yunchang.springboot.config.datadource.DBContextHolder;
//import com.yunchang.springboot.config.datadource.DynamicDataSource;
//import com.yunchang.springboot.mapper.database.IBaseDatabaseMapper;
//import com.yunchang.springboot.models.database.dto.BaseDatabaseDTO;
//import com.yunchang.springboot.service.database.IBaseDatabaseService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//
///**
// * <p>
// * 数据库基础表 服务实现类
// * </p>
// *
// * @author ldw
// * @since 2020-07-01
// */
//@Service
//public class BaseDatabaseServiceImpl extends ServiceImpl<IBaseDatabaseMapper, BaseDatabaseDTO> implements IBaseDatabaseService {
//    @Autowired
//    IBaseDatabaseMapper dataSourceMapper;
//
//    @Autowired
//    private DynamicDataSource dynamicDataSource;
//
//    @Override
//    public List<BaseDatabaseDTO> get() {
//        return super.list();
//    }
//
//    @Override
//    public boolean changeDb(String name) {
//        //默认切换到主数据源,进行整体资源的查找
//        DBContextHolder.clearDataSource();
//        List<BaseDatabaseDTO> dataSourcesList = get();
//        for (BaseDatabaseDTO dataSource : dataSourcesList) {
//            if (dataSource.getDatabaseName().equals(name)) {
//                System.out.println("需要使用的的数据源已经找到,datasourceName是：" + dataSource.getDatabaseName());
//                //创建数据源连接&检查 若存在则不需重新创建
//                try {
//                    if(!dynamicDataSource.createDataSourceWithCheck(dataSource)){
//                        return false;
//                    }
//                } catch (RuntimeException e) {
//                    e.printStackTrace();
//                    return false;
//                }
//                //切换到该数据源
//                DBContextHolder.setDataSource(dataSource.getDatabaseName());
//                return true;
//            }
//        }
//        return false;
//    }
//
//}
